package org.ourguy.mymoviesandshows.apiclient;

import java.util.ArrayList;
import java.util.Hashtable;

import org.ourguy.mymoviesandshows.datamodel.Movie;

/**
 * Interface for Movie API Drivers.
 * Mostly kept for consistency.
 * @author ignisf
 */
public interface IMovieAPIClient extends ITitleAPIClient {
	/**
	 * Get the summary information for the given movie
	 * @param id TMDB id of the movie
	 * @return the movie
	 */
	public Movie getMovieSummary(String id) throws APIException;
	
	/**
	 * Search for a Movie by title.
	 * @param query The title of the movie we are looking for
	 * @return The list of movies that match the query
	 * @throws APIException Throws an exception if something goes wrong.
	 */
	public ArrayList<Movie> searchMovies(String query) throws APIException;
	
	/**
	 * List of trending movies.
	 * @return The current list of trending movies. 
	 * @throws APIException Throws an exception if something goes wrong.
	 */
	public ArrayList<Movie> getTrendingMovies() throws APIException;
	
	/**
	 * Get a slim hashtable of the apiId -> title format for a given query 
	 * @param q the string we are looking for in the movie's title
	 * @return the results
	 * @throws APIException
	 */
	public Hashtable<String, String> autoCompleteMovie(String q) 
			throws APIException;
	
}
